package com.smart.community.region.enums;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 店铺类型枚举
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-09-30
 */
@Getter
@AllArgsConstructor
public enum ShopTypeEnum {
    
    /**
     * 餐饮
     */
    RESTAURANT(1, "餐饮"),
    
    /**
     * 零售
     */
    RETAIL(2, "零售"),
    
    /**
     * 服务
     */
    SERVICE(3, "服务"),
    
    /**
     * 其他
     */
    OTHER(4, "其他");
    
    @JsonValue
    private final Integer code;
    private final String description;
    
    /**
     * Jackson反序列化方法
     * 严格遵循《系统状态枚举权威标准声明.md》规范
     * 
     * @param code 枚举值
     * @return 对应的枚举，如果不存在则返回null
     */
    @JsonCreator
    public static ShopTypeEnum fromCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (ShopTypeEnum shopType : values()) {
            if (shopType.getCode().equals(code)) {
                return shopType;
            }
        }
        return null;
    }
    
    /**
     * 根据代码获取描述
     * 
     * @param code 代码
     * @return 描述
     */
    public static String getDescriptionByCode(Integer code) {
        ShopTypeEnum shopType = fromCode(code);
        return shopType != null ? shopType.getDescription() : "未知类型";
    }
}
